<?php
// 应用公共文件
function jsonReturn($code=0,$msg='',$data=null,$page=null,$other=null)
{
    $arr=[
        'code'  =>  $code,
        'msg'   =>  $msg,
    ];
    if ($data !== null){
        $arr['data']=$data;
    }
    if ($page !== null){
        $arr['page']=$page;
    }
    if ($other !== null){
        $arr['other']=$other;
    }
    return json($arr);
}

/**
 * 密码加密
 * @param $str 加密字符串
 * @return string
 */
function pwdMd5($str){
    return md5('hx_' . md5(trim($str)) . '_2019');
}

/**
 * 获取电脑微秒
 * @return float
 */
function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

/**
 * 随机中文字符串
 * @param $num
 * @return string
 */
function getChar($num)  // $num为生成汉字的数量
{
    $b = '';
    for ($i=0; $i<$num; $i++) {
        // 使用chr()函数拼接双字节汉字，前一个chr()为高位字节，后一个为低位字节
        $a = chr(mt_rand(0xB0,0xD0)).chr(mt_rand(0xA1, 0xF0));
        // 转码
        $b .= iconv('GB2312', 'UTF-8', $a);
    }
    return $b;
}

/**
 * @param $pid
 * @param $data 数据
 * @param string $childName
 * @return array
 */
function getChild($pid, $data, $childName = 'children') {
    $result = array();
    foreach($data as $val) {
        if($val['pid'] == $pid) {
            $c = getChild($val['id'], $data);
            if($c){
                $val[$childName] = $c;
            }
            $result[] = $val;
        }
    }
    return $result;
}

function getChildArr($pid,$data){
    $result = array();
    foreach($data as $val) {
        if($val['pid'] == $pid) {
            $childArr = getChildArr($val['id'], $data);
            if($childArr){
                $result = array_merge($result,[$val],$childArr);
            }else{
                $result = array_merge($result,[$val]);
            }
        }
    }
    return $result;
}


/**
 * 移动文件
 * @param $directory 目的地地址
 * @param $oldFile 原地址
 * @param string $err
 * @return bool
 */
function move_file($directory,$oldFile,&$err=''){
    if(!file_exists($oldFile)){
        $err="源文件不存在:" .$oldFile;
        return false;
    }
    if (!is_dir($directory)) {
        if (false === @mkdir($directory, 0777, true) && !is_dir($directory)) {
            $err="没有该目录的权限";
            return false;
        }
    } elseif (!is_writable($directory)) {
        $err="该目录没有写入的权限";
        return false;
    }
    try{

        $fileName = substr($oldFile,strrpos($oldFile,'/'));
        $target = rtrim($directory, '/\\') . '/';

        if(!copy($oldFile,$target . \DIRECTORY_SEPARATOR . $fileName)){
            $err="移动失败！";
            return false;
        }
        return $target . \DIRECTORY_SEPARATOR . $fileName;
    }catch (\Exception $e){
        $err="移动失败！" . $e->getMessage();
        return false;
    }

}